// 导航守卫

import router from './router'
import store from '@/store'
// asyncRoutes
router.beforeEach(async(to, form, next) => {
  // 确认有没有登陆
  if (store.state.user.token) {
    // 已登陆
    if (to.path === '/login') {
      // 如果是登陆页就直接跳转到主页
      next('/')
    } else {
      // 否则就不变
      // 其他情况 放行
      // 这里是确定了用户已经登录, 进入的是一个非 登录页外的其他正常页面
      // 需要在这, 进入页面之前获取数据, 这样能够保证无论进入的是哪个页面
      // vuex 当中都能获取到用户数据, 另外如果本来就已经获取过
      // 只是从一个页面进入到另一个, 没必要再次获取
      if (!store.state.user.profile) {
        await store.dispatch('user/getProfile')

        next()
      }
      next()
    }
  } else {
    const whiteList = ['/login', '/404']
    //   筛选是不是白名单内文件
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
      // 不是就跳转到登录
    }
  }
})
